package inutan.game.business;

import inutan.game.entity.prop.BaseItemInfo;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

// 默认策略管理器
public class PropUnwrapManager {
    private static final List<PropUnwrapStrategy> strategies = new ArrayList<>();

    public static void registerStrategy(PropUnwrapStrategy strategy) {
        strategies.add(0, strategy); // 后注册的优先级高
    }

    public static List<BaseItemInfo> unwrap(GameFlowContext context, List<BaseItemInfo> items) {
        return items.stream()
                .flatMap(item -> unwrapItem(context, item).stream())
                .collect(Collectors.toList());
    }

    private static List<BaseItemInfo> unwrapItem(GameFlowContext context, BaseItemInfo item) {
        return strategies.stream()
                .filter(s -> s.match(item.getItemType(), item.getItemId()))
                .findFirst()
                .map(s -> s.unwrap(context, item))
                .orElse(List.of(item));
    }
}
